package manager

import (
	"battle-server/model"
	"errors"
	"fmt"
	"log"
)

var (
	RoomCache  map[int]*model.Room // 房间管理，key -> 房间id, val -> 对战双方
	TokenCache map[string]int      // token缓存
)

func InitCache() {
	log.Println("初始化房间信息...")

	RoomCache = make(map[int]*model.Room)
	TokenCache = make(map[string]int)

	// 初始化英雄数据
	InitHeroData()
}

// 加入token
func AddTokenToCache(token string) error {
	_, exists := TokenCache[token]
	if exists {
		return errors.New("该token已经存在")
	}
	TokenCache[token] = 1
	return nil
}

// CreateBattle 创建战斗实例
func CreateBattle(roomID, player1ID, player2ID int) *model.Battle {
	battle := model.NewBattle(roomID, player1ID, player2ID)
	return battle
}

// AddHeroToBattle 添加英雄到战斗
func AddHeroToBattle(battle *model.Battle, heroID, playerID int, position int) error {
	// 检查位置是否有效
	if position < 0 || position > 6 {
		return fmt.Errorf("invalid position: %d", position)
	}

	// 创建战斗英雄
	hero, err := CreateBattleHero(heroID, playerID, position)
	if err != nil {
		return err
	}

	// 添加英雄到战斗
	return battle.AddHero(hero, position)
}

// SaveBattleResult 保存战斗结果
func SaveBattleResult(result *model.BattleResult) error {
	// 这里可以将战斗结果保存到数据库
	// 简化版：暂不实现
	return nil
}
